package com.newtouch.bxzs.enterprise.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.newtouch.bxzs.enterprise.model.bo.AcceptionCustomerRecordBO;
import com.newtouch.bxzs.enterprise.model.bo.RevocationCustomerBO;
import com.newtouch.bxzs.enterprise.model.vo.AcceptionCustomerVO;
import com.newtouch.bxzs.enterprise.model.vo.CustomerCndVO;
import com.newtouch.bxzs.enterprise.model.vo.GoBackCustomerVO;
import com.newtouch.bxzs.enterprise.model.vo.ReceivePushRecordVO;

import java.util.List;
import java.util.Map;

/**
 * 客户接收Service
 * <p>
 * <b>History:</b>
 * <table border="1">
 * <tr>
 * <th>Date</th>
 * <th>Operator</th>
 * <th>Memo</th>
 * </tr>
 * <tr>
 * <td>2021/1/12 14:12</td>
 * <td>Amour</td>
 * <td>Create</td>
 * </tr>
 * </table>
 *
 * @author Amour
 * @version 1.0.0
 * @since 1.0.0
 *
 */
public interface AcceptionCustomerService {

    /**
     * 查询客户接收列表
     * @param customerCndVO
     *          客户接收列表查询条件
     * @return List<AcceptionCustomerRecordBO>
     */
    Page<AcceptionCustomerRecordBO> getReceiveList(CustomerCndVO customerCndVO);

    /**
     * 接收客户
     * @param acceptionCustomerVO
     *          客户接收记录
     * @return String
     *          提示信息
     */
    String receiveCustomer(AcceptionCustomerVO acceptionCustomerVO);

    /**
     * 接收客户推送信息
     * @param receivePushRecordVO
     *           客户推送信息
     * @return boolean
     *          是否接收成功
     */
    boolean receivePushRecord(ReceivePushRecordVO receivePushRecordVO);

    /**
     * 接收对端撤销推送信息
     * @param revocationCustomerBO
     *          推送记录id和推送状态
     * @return boolean
     *          是否撤销成功
     */
    boolean revocationCustomer(RevocationCustomerBO revocationCustomerBO);

    /**
     * 一键出单
     * @param policyType 通知类型
     * @return 出单结果
     */
    String issueAnOrder(String policyType);

    /**
     * 一键办理-分享
     * @return 官网路径
     */
    List<Map> handleShare();
    /**
     * 一键办理-跳转
     * @return app路径
     */
    List<Map> handleJump();

    /**
     * 接收客户退回
     * @param goBackCustomer 客户退回
     * @return 成功标识
     */
    boolean customerGoBack(GoBackCustomerVO goBackCustomer);

    /**
     * 客户退回
     * @param goBackCustomer 客户退回
     * @return 成功标识
     */
    boolean goBackCustomer(GoBackCustomerVO goBackCustomer);
}
